/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sales.hanserver.action.hancadpe.insert;

import br.com.sales.hanserver.action.hancadpe.GetDataPersonGridAction;
import br.com.sales.hanserver.action.hancadpe.insert.query.InsertPersonQuery;
import br.com.sales.hanserver.action.hancadpo.insertproduct.InsertProductAction;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author v
 */
public class InsertPersonAction extends InsertPersonQuery {

    public InsertPersonAction() {
    }

    public Map insertPerson(Map fields) {
        Long sequence = Long.parseLong(fields.get("SEQ").toString());
        try {
            if (sequence > 0) {
                updatePerson(fields.get("NM_PESSOA_FISICA").toString(),
                        new Timestamp(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse(fields.get("DT_REGISTRO").toString()).getTime()),
                        fields.get("IE_TIPO_PESSOA").toString(),
                        ("".equals(fields.get("DT_NASCIMENTO")) ? null 
                                : new Timestamp(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse(fields.get("DT_NASCIMENTO").toString() + " 00:00:00").getTime())),
                        fields.get("CD_CPF").toString(),
                        fields.get("CD_RG").toString(),
                        fields.get("DS_ENDERECO").toString(),
                        (String) fields.get("NR_TELEFONE"),
                        (String) fields.get("NR_CELULAR"),
                        !"".equals(fields.get("NR_SEQ_PAIS")) && fields.get("NR_SEQ_PAIS") != null ? Integer.parseInt((String) fields.get("NR_SEQ_PAIS")) : null,
                        !"".equals(fields.get("NR_SEQ_ESTADO")) && fields.get("NR_SEQ_ESTADO") != null ? Integer.parseInt((String) fields.get("NR_SEQ_ESTADO")) : null,
                        !"".equals(fields.get("NR_SEQ_CIDADE")) && fields.get("NR_SEQ_CIDADE") != null ? Integer.parseInt((String) fields.get("NR_SEQ_CIDADE")) : null,
                        fields.get("IE_TIPO_USUARIO").toString(),
                        fields.get("NM_USUARIO").toString(),
                        fields.get("DS_SENHA").toString(),
                        sequence);
            } else {
                insertPerson(fields.get("NM_PESSOA_FISICA").toString(),
                        new Timestamp(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse(fields.get("DT_REGISTRO").toString()).getTime()),
                        fields.get("IE_TIPO_PESSOA").toString(),
                        ("".equals(fields.get("DT_NASCIMENTO")) ? null 
                                : new Timestamp(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse(fields.get("DT_NASCIMENTO").toString() + " 00:00:00").getTime())),
                        fields.get("CD_CPF").toString(),
                        fields.get("CD_RG").toString(),
                        fields.get("DS_ENDERECO").toString(),
                        (String) fields.get("NR_TELEFONE"),
                        (String) fields.get("NR_CELULAR"),
                        !"".equals(fields.get("NR_SEQ_PAIS")) && fields.get("NR_SEQ_PAIS") != null ? Integer.parseInt((String) fields.get("NR_SEQ_PAIS")) : null,
                        !"".equals(fields.get("NR_SEQ_ESTADO")) && fields.get("NR_SEQ_ESTADO") != null ? Integer.parseInt((String) fields.get("NR_SEQ_ESTADO")) : null,
                        !"".equals(fields.get("NR_SEQ_CIDADE")) && fields.get("NR_SEQ_CIDADE") != null ? Integer.parseInt((String) fields.get("NR_SEQ_CIDADE")) : null,
                        fields.get("IE_TIPO_USUARIO").toString(),
                        fields.get("NM_USUARIO").toString(),
                        fields.get("DS_SENHA").toString());
            }
        } catch (Exception ex) {
            Logger.getLogger(InsertProductAction.class.getName()).log(Level.SEVERE, null, ex);
        }
        return new GetDataPersonGridAction().getLastPerson(sequence);
    }
}
